﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;

namespace Onshi.POS.AccesoDatos.Interfaces
{
    public interface IServicioDatosArticulos
    {
        #region Metodos

        DataSet Articulos_DevolverTodos(Boolean incluirImagen);
        DataSet Articulos_DevolverPorId(Int32 idArticulo, Boolean incluirImagen);
        DataSet Articulos_DevolverPorCodigo(String codigo, Boolean incluirImagen);
        Int32 Articulos_Insertar(Byte idTipoArticulo, Int32 idSubRubroArticulo, Int32 idMarca, Int32 idDescuentoRecargoCantidad, Byte idTipoComisionArticulo, Byte idTipoImpuestoArticulo, Byte idTipoCostoArticulo, Int32 idDescuentoRecargoFechaHora, String codigo, String nombre, Int32 existenciaMinima, Int32 existenciaMaxima, Decimal costo, Decimal comision, Decimal comisionMaxima, Decimal iva, Decimal impuesto, String observaciones, Byte[] imagen, String codigoBarras);
        void Articulos_Modificar(Int32 idArticulo, Byte idTipoArticulo, Int32 idSubRubroArticulo, Int32 idMarca, Int32 idDescuentoRecargoCantidad, Byte idTipoComisionArticulo, Byte idTipoImpuestoArticulo, Byte idTipoCostoArticulo, Int32 idDescuentoRecargoFechaHora, String codigo, String nombre, Int32 existenciaMinima, Int32 existenciaMaxima, Decimal costo, Decimal comision, Decimal comisionMaxima, Decimal iva, Decimal impuesto, String observaciones, Byte[] imagen, Boolean estaEliminado, String codigoBarras);

        void ArticulosCamposPersonalizadosArticulos_Insertar(Int32 idArticulo, Int32 idCampoPersonalizadoArticulo, String valor);
        void ArticulosCamposPersonalizadosArticulos_EliminarPorArticulo(Int32 idArticulo);
        void ArticulosCamposPersonalizadosArticulos_EliminarPorCampoPersonalizadoArticulo(Int32 idCampoPersonalizadoArticulo);

        void ArticulosListasPreciosCompras_Insertar(Int32 idArticulo, Int32 idListaPrecioCompra, Decimal valor);
        void ArticulosListasPreciosCompras_EliminarPorArticulo(Int32 idArticulo);
        void ArticulosListasPreciosCompras_EliminarPorListaPrecioCompra(Int32 idListaPrecioCompra);

        void ArticulosListasPreciosVentas_Insertar(Int32 idArticulo, Int32 idListaPrecioVenta, Decimal valor);
        void ArticulosListasPreciosVentas_EliminarPorArticulo(Int32 idArticulo);
        void ArticulosListasPreciosVentas_EliminarPorListaPrecioVenta(Int32 idListaPrecioVenta);

        Int32 ArticulosVariantes_Insertar(Int32 idArticulo, String nombre);
        void ArticulosVariantes_EliminarPorArticulo(Int32 idArticulo);

        Int32 ArticulosVariantesDetalles_Insertar(Int32 idArticuloVariante, String valor);

        Int32 ArticulosExistencias_Insertar(Int32 idArticulo, Int32 idUbicacion, Int32 cantidad);
        void ArticulosExistencias_EliminarPorArticulo(Int32 idArticulo);
        void ArticulosExistencias_EliminarPorUbicacion(Int32 idUbicacion);

        Int32 ArticulosExistenciasDetalles_Insertar(Int32 idArticuloExistencia, Int32 idArticuloVarianteDetalle);

        void ArticulosProveedores_Insertar(Int32 idArticulo, Int32 idProveedor);
        void ArticulosProveedores_EliminarPorArticulo(Int32 idArticulo);

        Int32 ArticulosCompuestos_Insertar(Int32 idArticulo, Int32 idArticuloDetalle, Int32 cantidad);
        void ArticulosCompuestos_EliminarPorArticulo(Int32 idArticulo);

        void Articulos_ModificarSubRubroArticulo(Int32 idSubRubroArticuloNuevo, Int32 idSubRubroArticuloViejo);
        void Articulos_ModificarMarca(Int32 idMarcaNuevo, Int32 idMarcaViejo);
        void Articulos_ModificarDescuentoRecargoFechaHora(Int32 idDescuentoRecargoFechaHoraNuevo, Int32 idDescuentoRecargoFechaHoraViejo);
        void Articulos_ModificarDescuentoRecargoCantidad(Int32 idDescuentoRecargoCantidadNuevo, Int32 idDescuentoRecargoCantidadViejo);

        #endregion
    }
}
